package outline;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
// 스윙 프로그램 모양과 느낌 변경
// javax.swing.UIManager 클래스의
// setLookAndFeel 메서드를 사용
// com.sun.java.swing.plaf.gtk.GTKLookAndFeel
// javax.swing.plaf.metal.MetalLookAndFeel
// com.sun.java.swing.plaf.windows.WindowsLookAndFeel
// com.sun.java.swing.plaf.motif.MotifLookAndFeel
// com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel


// 스윙 메뉴 만들기
// 대부분의 프로그램에는 메뉴가 꼭 존재
// 메뉴바는 항상 프로그램의 최상단에 위치
// 하위 메뉴는 감춰져 있기 때문에 공간을 차지 X 
// 메뉴를 사용하려면 먼저, 컨테이너에 메뉴바를
// 추가하고, 메뉴에 메뉴항목을 추가하면 됨 
// 메뉴바의 메뉴를 클릭하면 메뉴가 표시됨
// 메뉴에 대한 이벤트처리기를 작성하지 않아도
// 자동으로 처리됨
// 단, 메뉴항목은 JButton의 일부이기 떄문에
// 마우스 클릭을 처리할 action listenner를 추가해야함
// 따라서, 클래스가 ActionListener를 구현하도록 하면

//UIManager.set.LookAndFeel(룩앤필명칭);
//Look And Feel 지정
//MacOSX와 비슷한 lookandfeel을 제공하는 사이트
//www.randelshofer.ch/quaqua
// 메뉴항목에 대한 마우스클릭 처리 가능

//JFrame.setDefaultLookAndFeelDecorated(true);
public class J06_HelloSwingLookAndFeel extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		// quaqua 룩앤필 적용(1)
					System.setProperty(
							"Quaqua.tabLayoutPolicy","wrap");
		EventQueue.invokeLater(new Runnable() {
			
			public void run() {
				try {
					//quaqua 룩앤필 적용
					//UIManager.setLookAndFeel(QuaquaManager.getLookAndFeel());
					JFrame.setDefaultLookAndFeelDecorated(true);
					J06_HelloSwingLookAndFeel frame = new J06_HelloSwingLookAndFeel();
					
					UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
					
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J06_HelloSwingLookAndFeel() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
	}

}
